1. Field of the Invention
This invention relates to computer systems, and more particularly to disconnected operation of a thin client application when a client is not able to access the application server over a network.
2. Description of the Related Art
Applications are often implemented for access over a network. The vision of ubiquitous access to information continues to expand as more users rely on, for example, Internet-based applications. Ubiquitous access typically refers to the ability of users to access applications from virtually any network-connected computer at any time. A wide-area network such as an Internet may provide communication among computers as long as the computers are connected to the Internet. Examples of networked-based applications may range from stock trading applications to an employee paycheck tool. If a connection to the network ends, access to an application relying on the connection may also end.
Applications accessible over a network may become inaccessible at any time for various reasons. For example, a laptop operating a personal productivity tool via a network may be picked up and disconnected from the network. An existing network connection used by an application may suddenly disconnect because of a network cable failure or network traffic congestion, among other reasons. A massive network infrastructure such as the Internet may be subject to frequent shifts in configuration and network conditions. Numerous different computers may span multiple platforms and communication networks. Configuration volatility may be attributed to, for example, mobile computers (e.g., laptops, hand-held devices) repeatedly connecting and disconnecting from the network. Reliability of the network tends to be unpredictable. Network failures are usually unexpected and may last for varying periods of time ranging from a few seconds to several hours or more.
As users gradually rely on the Internet as an indispensable tool, users may desire Internet-based applications to operate even though the applications or users may be occasionally disconnected from a network. The expectation is for productivity to continue even though a network connection is unavailable or not currently used. The application may be mission critical (e.g., users of the application may rely heavily on critical data maintained by the application and may expect the application to be highly available). The application may be a personal productivity application such as an expense reporting tool or a business-wide calendar and scheduling tool. Lack of network access may prevent or impede completion of an activity that relies on functionality provided by a network-based application. For example, completion of an employee expense report via a network-based application may be delayed until a network connection, and thus the network-based application, is available and used.
In network-based client/server applications, a thin client may be defined as a client that may be used to access one or more applications remotely and that does not include the bulk of the application's logic. In other words, a thin client typically serves as an interface to application logic of one or more remote applications, but typically includes little if any actual executable application logic of the remote applications, and thus typically performs little or no business processing of the application(s). Thus, a thin client typically performs little or no processing of the application(s) it accesses. The remote applications, typically on servers, provide the application logic that executes on behalf of the thin client, typically in response to user interaction with the thin client.
A thin client may, for example, include a Web browser that displays Web pages received from a Web and/or application server. A Web page may include a small client application (e.g., an embedded applet) of the application that executes within the Web browser. The majority or all of the functionality of the application (e.g., querying databases, executing complex business rules, connecting to backend systems, etc.) may be performed the application logic executing on a server where security, speed, services, reliability, etc. of server-side technologies may be leveraged.
In network-based client/server applications, a fat client may be defined as a client that may be used to access an application or server remotely. A fat client typically includes a significant amount of application logic, and, unlike a thin client, may perform most or all of the processing of the application(s) it accesses. For example, many e-mail applications are typically fat clients. A fat client may communicate directly with application logic of one or more applications (typically server-based applications), for example using Remote Method Invocation (RMI) or other protocols.
Note that, in practice, clients in network-based client/server applications may fall in an essentially continuous range from thin clients that provide only an interface to an application to fat clients that perform most or all of the processing of an application.
A thin client application may be defined as an application where the application logic is primarily provided for one or more thin clients by a remote application. In this client/server architecture, most of the application processing is done in the (fat) server. For example, a thin client may supply a graphical interface, while the application includes the application logic and provides application processing according to user interaction with the application via the thin client interface. Advantages of a thin client application may include, but are not limited to, simpler hardware (hardware to support the thin clients does not have to be able to support much if any application logic and processing) and simpler maintenance (most or all maintenance for the application is done on the server).